主题
图片比较-均方误差 - CalculateMSE
函数简介
获取两张图片的均方误差,识别的两个图像大小必须一致。
接口名称
CalculateMSEDLL调用
double CalculateMSE(long ola, long imgPtr1, long imgPtr2);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| ola | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| imgPtr1 | 长整数型 | 第一个OLAImage对象的地址 |
| imgPtr2 | 长整数型 | 第二个OLAImage对象的地址 |
示例
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0) {
double mse = ola.CalculateMSE(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}csharp
using OLAPlug;
var ola = new OLAPlugServer();
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0)
{
double mse = ola.CalculateMSE(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
img1 = ola.LoadImage("images/scene.png")
img2 = ola.LoadImage("img/template.bmp")
if img1 and img2:
mse = ola.CalculateMSE(img1, img2)
# 后续不再使用该图时释放
ola.FreeImage(img1)
# 后续不再使用该对比图时释放
ola.FreeImage(img2)java
import com.olaplug.OLAPlugServer;
import com.olaplug.model.MatchResult;
import java.util.List;
OLAPlugServer ola = new OLAPlugServer();
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0) {
ola.CalculateMSE(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}cpp
var ola = com("OlaPlug.OlaSoft")
var img1 = ola.LoadImage("images/scene.png")
var img2 = ola.LoadImage("img/template.bmp")
if(img1 && img2) {
ola.CalculateMSE(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1)
ola.FreeImage(img2)
}vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
img1 = ola.LoadImage("images/scene.png")
img2 = ola.LoadImage("img/template.bmp")
If img1 <> 0 And img2 <> 0 Then
ola.CalculateMSE(img1, img2);
' 后续不再使用该图时释放
' 后续不再使用该对比图时释放
ola.FreeImage(img1)
ola.FreeImage(img2)
End Iftext
.局部变量 ola, OLAPlug
ola.创建 ()
img1 = ola.LoadImage ("images/scene.png")
img2 = ola.LoadImage ("img/template.bmp")
ola.CalculateMSE(img1, img2);
' 后续不再使用该图时释放
ola.FreeImage (img1)
' 后续不再使用该对比图时释放
ola.FreeImage (img2)aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var img1 = ola.LoadImage("images/scene.png");
var img2 = ola.LoadImage("img/template.bmp");
if(img1 && img2){
ola.CalculateMSE(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
长整数 img1 = ola.LoadImage("images/scene.png")
长整数 img2 = ola.LoadImage("img/template.bmp")
ola.CalculateMSE(img1, img2);
' 后续不再使用该图时释放
' 后续不再使用该对比图时释放
ola.FreeImage(img1)
ola.FreeImage(img2)cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0) {
ola.CalculateMSE(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}原生 DLL 调用
cpp
long instance = CreateCOLAPlugInterFace();
// img1/img2 为图像句柄
CalculateMSE(instance, img1, img2);csharp
using System.Runtime.InteropServices;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern double CalculateMSE(long ola, long image1, long image2);
long instance = CreateCOLAPlugInterFace();
double mse = CalculateMSE(instance, img1, img2);python
from ctypes import CDLL, c_int64
ola = CDLL("OLAPlug_x64.dll")
instance = ola.CreateCOLAPlugInterFace()返回值
双精度浮点数,两个图像的均方误差,值越小表示图像越相似,0表示完全相同。
注意事项
- 两个图像大小必须一致
